package storage

import (
	"io"
	"mime/multipart"
)

// StorageDriver 存储驱动接口
type StorageDriver interface {
	// Upload 上传文件
	// path: 存储路径
	// file: 文件内容
	// filename: 原始文件名
	// 返回: 访问URL, 错误
	Upload(path string, file io.Reader, filename string) (string, error)
	
	// UploadMultipart 上传multipart文件
	UploadMultipart(path string, fileHeader *multipart.FileHeader) (string, error)
	
	// Delete 删除文件
	Delete(path string) error
	
	// GetURL 获取文件访问URL
	GetURL(path string) string
	
	// Exists 检查文件是否存在
	Exists(path string) bool
}

// UploadConfig 上传配置
type UploadConfig struct {
	// 允许的文件类型
	AllowedTypes []string
	// 最大文件大小 (字节)
	MaxSize int64
	// 存储路径前缀
	PathPrefix string
	// 哈希算法 (md5, sha256)
	HashAlgorithm string
}

// FileInfo 文件信息
type FileInfo struct {
	// 原始文件名
	OriginalName string `json:"original_name"`
	// 存储文件名
	StoredName string `json:"stored_name"`
	// 文件大小
	Size int64 `json:"size"`
	// 文件类型
	ContentType string `json:"content_type"`
	// 存储路径
	Path string `json:"path"`
	// 访问URL
	URL string `json:"url"`
	// 文件分类
	Category string `json:"category"`
}
